<?php

	/**
	 *  Klass för att hantera med arrayer
	 */
	 
	class ArrayHandler {
		
		//----- FUNKTION: REVERSE ARRAY ----------------------------------------------------------------------------------------
		// En funktion som vänder på ordningen på en array. 
		// Min testarray ligger i 'array' och jag börjar med att skapa en ny array som heter 'result' där den nya arrayen ska ligga. 
		// Sen loopar jag igenom arrayen med början post 6(sista posten)(som innehåller det 7de namnet). Fortsätter loopa så länge den är större eller = 0. 
		// Använder -- för att den ska minska istället för att öka.
		public function ReverseArray($array) {
			$result = array();
			
			echo "Skriver ut den array som kommer in: ";
			echo "<br />";
			print_r($array);
			echo "<br /><br />";


			for ($post = count($array) - 1 ; $post >= 0 ; $post--) { 
				array_push($result, $array[$post]);
			}	
						
			echo "Skriver ut den omvända arrayen: ";
			echo "<br />";
			print_r($result);
			echo "<br /><br />";
					
			return $result;
		}				 
		
				
		//----- FUNKTION: RETURN LAST ITEM ----------------------------------------------------------------------------------------
		// En funktion som returnerar sista elementet i en array. Array Pop tar bort den sista posten i arrayen 'array' och lägger den i 'result'.
		public function ReturnLastItem($array) {
			
			$result = array();			
			$result = array_pop($array);
											
			echo "Retunerar sista elementet i arrayen: " . $result;											
			return $result; 		
		}
		

		//----- FUNKTION: TEST ----------------------------------------------------------------------------------------	
	  	public function Test() {
	  	 	
	  		// Min hårkodade testarray.
			$testArray = array("Buffy", "Angel", "Willow", "Xander", "Spike", "Dawn", "Giles");
			
			//----- TEST: REVERSE ARRAY ----------------------------------------------------------------------------------------			
			$resultArray = $this->ReverseArray($testArray);
			
			// Min hårkodade omvända testarray.
			$reversedArray = array("Giles", "Dawn", "Spike", "Xander", "Willow", "Angel", "Buffy");
			
			// KOntrollerar om min vända array är rätt (likadan som den hårdkodade vända arrayen).
			for ($i = 0; $i < 7; $i++) {
				if (isset($resultArray[$i]) == false) {
					echo "ReverseArray test misslyckades: inget index i returnerad array $i </br>";
					return false;
				} else if ($resultArray[$i] != $reversedArray[$i]) {
					echo "ReverseArray test misslyckades: felaktig array returnerades  </br>";
					return false;
				}
			}
			
			//----- TEST RETURN LAST ITEM ----------------------------------------------------------------------------------------
			if ($this->ReturnLastItem($testArray) != "Giles") {
				echo "ReturnLastItem test misslyckades: felaktigt returvärde </br>";
				return false;
			}			
			return true;   	
	  }
  }